package redis.clients.jedis;

import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLParameters;
import javax.net.ssl.SSLSocketFactory;


/**
 * JedisClientConfig是Jedis连接池中的一个配置类，用于设置Jedis客户端的配置信息。它包含了一些常用的配置项
 * 如超时时间、最大连接数、最小空闲连接数等。通过使用JedisClientConfig，可以灵活地配置Jedis客户端的行为。
 */
public interface JedisClientConfig {

    /**
     * 连接池中连接建立的超时时间，单位为毫秒
     */
    default int getConnectionTimeoutMillis() {
        return Protocol.DEFAULT_TIMEOUT;
    }

    /**
     * 连接池中连接的 socket 超时时间，单位为毫秒
     */
    default int getSocketTimeoutMillis() {
        return Protocol.DEFAULT_TIMEOUT;
    }

    /**
     * @return Socket timeout (in milliseconds) to use during blocking operation. Default is '0',
     * which means to block forever.
     */
    default int getBlockingSocketTimeoutMillis() {
        return 0;
    }

    /**
     * 用户名
     */
    default String getUser() {
        return null;
    }

    /**
     * 密码
     */
    default String getPassword() {
        return null;
    }


    /**
     * 修改密码
     */
    default void updatePassword(String password) {
    }


    /**
     * 数据库索引,默认0
     */
    default int getDatabase() {
        return Protocol.DEFAULT_DATABASE;
    }

    default String getClientName() {
        return null;
    }

    /**
     * @return <code>true</code> - to create a TLS connection. <code>false</code> - otherwise.
     */
    default boolean isSsl() {
        return false;
    }

    default SSLSocketFactory getSslSocketFactory() {
        return null;
    }

    default SSLParameters getSslParameters() {
        return null;
    }

    default HostnameVerifier getHostnameVerifier() {
        return null;
    }

    default HostAndPortMapper getHostAndPortMapper() {
        return null;
    }

}
